// 提供 用户 相关的vuex操作

import { getUserInfo } from '@/api/user'

// 导入本地存储
import {
  setStorageToken,
  removeStorageToken,
  getStorageToken
} from '@/utils/storage'

const state = {
  // 先去本地存储看看是否有token数据,有的话就取出来给state的token,没有的话就是空对象
  // token: JSON.parse(localStorage.getItem(token)) || {}
  // 封装后
  token: getStorageToken(),
  userInfo: {}
}

const mutations = {
  setToken(state, value) {
    state.token = value

    // 把value 永久储存起来
    // localStorage.setItem('hm-news-token', JSON.stringify(value))

    setStorageToken(value)
  },
  // 退出登录的时候, 需要将token给删除掉
  removeToken(state) {
    //   清除token 操作
    state.token = {}

    // 清空本地存储的token数据
    // localStorage.removeItem('hm-news-token')
    // 封装后
    removeStorageToken()
  },

  // 获取用户信息
  setUserInfo(state, obj) {
    state.userInfo = obj
  }
}

const actions = {
  // 提供异步操作
  // context 指仓库
  async ActionsGetUserInfo(context) {
    const res = await getUserInfo()

    // actions 里面不能直接修改数据 (修改数据都是通过mutations方法)
    context.commit('setUserInfo', res.data)
  }
}
const getters = {}

export default {
  // 命名空间
  namespaced: true,
  state,
  mutations,
  actions,
  getters
}
